/**********************************************************************************************/		
/* dBool.h																					  */
/*																							  */
/* Implementation of boolean type													          */
/* Copyright Diamant Software, 2011															  */
/* All Rights Reserved.																	  	  */
/**********************************************************************************************/

#ifndef dBOOL_H
#define dBOOL_H

/**********************************************************************************************/
// Enum for values of dBool variable
//
enum dBOOL_VALUE 
{
	dTRUE	=	1,		// Logical "1"
	dFALSE	=	0,		// Logical "0"
	dVAR	=	-1,		// Various value - for the logic this value does not matter
	dFBD	=	-2		// Forbidden - undefined value
};


/**********************************************************************************************/
class dBool
{

	public:////////////////////////////////////////////////////////////////////////////////////

							dBool( bool inValue );

explicit					dBool( dBOOL_VALUE inValue )
								{ mValue = inValue; }

	public:////////////////////////////////////////////////////////////////////////////////////

			dBOOL_VALUE		get( void )								throw()
								{ return mValue; }
			bool			get_bool( void )						throw();
				
			void			set( dBOOL_VALUE inValue )				throw()
								{ inValue = mValue; }
			void			set_bool( bool inValue )				throw();

	private:///////////////////////////////////////////////////////////////////////////////////

			dBOOL_VALUE		convert( bool inValue )					throw();
			bool			convert( dBOOL_VALUE inValue )			throw();

	private:///////////////////////////////////////////////////////////////////////////////////

			dBOOL_VALUE		mValue;	

};


#endif // dBOOL_H